#ifndef __MYHEAD_H__
#define __MYHEAD_H__

#include "shmem.c"
#include "msg_queue_peer.c"
#include "cJSON.c"
typedef union val_t
{
    int b_val;   // bool类型存储空间
    int i_val;   // 整形值存储空间
    float f_val; // 浮点值存储空间
} u_msg_t, *u_msg_p;
struct que_order // 消息队列的消息类型
{
    long tag;       // 消息队列的消息类型
    int key;        // 数据节点唯一标识
    char val[32];   // 数据
};
typedef struct data_node
{
    int key;             // 唯一键值
    int type;            // 数据点类型
    int dev_type;        // 数据点属于哪个设备，根据网关支持的设备自行定义
    union val_t old_val; // 变化上报后需要更新旧值
    union val_t new_val; // 从共享内存取出最新数据，放到new_val中
    int ret;             // 默认为-1，采集成功后设置为0，采集失败再置-1
} s_msg_t, *s_msg_p;


#define MSG_STRUCT_SIZE sizeof(s_msg_t)                                    // 一个结构体大小
#define MSG_COUNT 10                                                       // 多少结构体
#define MSG_TOTAL_SIZE ((MSG_STRUCT_SIZE * MSG_COUNT) + (sizeof(int) * 2)) // 开辟的总大小，加2个数据个数计数位大小，



#endif